package com.example.exercises;

/**
 * @author wxz
 * <p>
 * 跳台阶
 * <p>
 * 思路是从下到上递归。
 * 比如1⃣️一级台阶1个方法，2⃣️两级台阶两个方法。
 * 如果三级台阶先走1⃣️，则还需走个2⃣️；若先走2⃣️，则还需走个1⃣️。
 * 所以三级台阶为一二数相架。
 * <p>
 * 利用滑动数组的思想。只存最大的两个数值。然后反复替代。
 */
public class Step {
    public static void main(String[] args) {
        Step step = new Step();
        System.out.println(step.climbStairs(3));
    }

    public int climbStairs(int n) {
        if (n <= 2) {
            return n;
        }
        int num1 = 2;
        int num2 = 1;
        int sum = 0;
        for (int i = 2; i < n; i++) {
            sum = num1 + num2;
            num2 = num1;
            num1 = sum;
        }
        return sum;
    }
}
